package site.addzero.repl

import org.koin.core.annotation.Single
import site.addzero.app.AdvancedRepl
import site.addzero.app.ParamDef
import site.addzero.cli.platform.PlatformTools
import site.addzero.cli.platform.PlatformTools.isMac

/**
 * EnableAllSourcesRepl的REPL包装类，实现AdvancedRepl接口
 * 用于在MacOS上开启所有来源（允许从任何来源安装应用）
 */
@Single
class EnableAllSourcesRepl : AdvancedRepl<Unit, Unit> {
    override val command: String = "enable-all-sources"
    override val description: String = "在MacOS上开启所有来源（允许从任何来源安装应用）"
    override val paramDefs: List<ParamDef> = listOf()
    override fun support(): Boolean {
        return isMac()
    }

    override fun eval(params: Unit) {
        println("正在尝试开启所有来源设置...")
        val command = "sudo spctl --master-disable"
        val result = PlatformTools.executeCommandInteractive(command, 30000)

        if (result.isSuccess()) {
            println("成功开启所有来源设置")
            println("您现在可以从任何来源安装应用程序")
        } else {
            System.err.println("开启所有来源设置失败")
            if (result.error.isNotBlank()) {
                System.err.println("错误信息: ${result.error}")
            }
        }
    }

}
